#include "loginwindow.h"
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QMessageBox>
#include <QPainter>
#include <QPixmap>

LoginWindow::LoginWindow(QWidget *parent) : QWidget(parent)
{
    // 设置窗口标题和尺寸
    setWindowTitle("Login and Registration");
    setFixedSize(600, 400);  // 窗口固定大小为600x400像素

    // 创建用户名标签并设置字体大小
    QLabel *usernameLabel = new QLabel("用户名:");
    usernameLabel->setStyleSheet("font-size: 22px;");  // 增大字体至22px

    // 创建用户名输入框
    usernameEdit = new QLineEdit;
    usernameEdit->setFixedHeight(40);  // 设置输入框高度为40像素

    // 创建密码标签并设置字体大小
    QLabel *passwordLabel = new QLabel("密码:");
    passwordLabel->setStyleSheet("font-size: 22px;");  // 增大字体至22px

    // 创建密码输入框，设置为密码模式
    passwordEdit = new QLineEdit;
    passwordEdit->setEchoMode(QLineEdit::Password);  // 隐藏密码输入
    passwordEdit->setFixedHeight(40);  // 设置输入框高度为40像素

    // 创建登录和注册按钮
    QPushButton *loginButton = new QPushButton("登录");
    QPushButton *registerButton = new QPushButton("注册");

    // 修改登录按钮样式，设置背景色和文字颜色
    loginButton->setStyleSheet(
        "background-color: #4CAF50; color: black; padding: 10px; border-radius: 5px;"
    );
    // 修改注册按钮样式，设置背景色和文字颜色
    registerButton->setStyleSheet(
        "background-color: #2196F3; color: black; padding: 10px; border-radius: 5px;"
    );

    // 设置按钮的固定高度
    loginButton->setFixedHeight(40);  // 设置按钮高度为40像素
    registerButton->setFixedHeight(40);  // 设置按钮高度为40像素

    // 创建布局管理器，使用垂直和水平布局
    QVBoxLayout *formLayout = new QVBoxLayout;  // 垂直布局用于输入框
    formLayout->addWidget(usernameLabel);  // 添加用户名标签
    formLayout->addWidget(usernameEdit);    // 添加用户名输入框
    formLayout->addWidget(passwordLabel);    // 添加密码标签
    formLayout->addWidget(passwordEdit);     // 添加密码输入框

    QHBoxLayout *buttonLayout = new QHBoxLayout;  // 水平布局用于按钮
    buttonLayout->addWidget(loginButton);  // 添加登录按钮
    buttonLayout->addWidget(registerButton); // 添加注册按钮

    // 将按钮布局添加到主布局中
    formLayout->addLayout(buttonLayout);
    formLayout->setContentsMargins(50, 50, 50, 50);  // 设置边距

    // 设置布局到窗口
    setLayout(formLayout);

    // 连接按钮点击信号到相应的槽函数
    connect(loginButton, &QPushButton::clicked, this, &LoginWindow::handleLogin);
    connect(registerButton, &QPushButton::clicked, this, &LoginWindow::handleRegister);
}

// 处理登录按钮点击事件
void LoginWindow::handleLogin()
{
    QString username = usernameEdit->text();  // 获取用户名输入
    QString password = passwordEdit->text();  // 获取密码输入

    // 验证用户名和密码
    if (username == "user" && password == "password") {
        QMessageBox::information(this, "成功", "登录成功！");  // 登录成功提示
    } else {
        QMessageBox::warning(this, "失败", "用户名或密码错误！");  // 登录失败提示
    }
}

// 处理注册按钮点击事件
void LoginWindow::handleRegister()
{
    QMessageBox::information(this, "注册", "注册功能待实现...");  // 提示注册功能未实现
}

// 设置背景图片的接口，带有透明度设置
void LoginWindow::setBackgroundImage(const QString &path)
{
    // 创建 QPixmap 对象并加载背景图片
    QPixmap backgroundPixmap(path);
    // 创建一个新的 QPixmap 作为背景图，大小与当前窗口相同
    QPixmap scaledPixmap = backgroundPixmap.scaled(this->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);

    // 创建一个 QPainter 来绘制背景
    QPalette palette;  // 创建调色板
    QPixmap transparentPixmap(scaledPixmap.size());  // 创建透明 QPixmap
    transparentPixmap.fill(Qt::transparent); // 填充透明

    QPainter painter(&transparentPixmap);  // 创建 QPainter 对象
    painter.setOpacity(0.8);  // 设置透明度为0.8
    painter.drawPixmap(0, 0, scaledPixmap);  // 绘制缩放后的背景图

    // 设置透明背景到窗口
    palette.setBrush(this->backgroundRole(), QBrush(transparentPixmap));
    this->setPalette(palette);
}

// 设置窗口图标的接口
void LoginWindow::setWindowIcon(const QIcon &icon)
{
    QWidget::setWindowIcon(icon);  // 设置窗口图标
}
